package com.huaguoguo.cyg.spider.processor.weibo;

import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.huaguoguo.cyg.converter.StringActionDataConverter;
import com.huaguoguo.cyg.entity.weibo.to.WBDetail;
import com.huaguoguo.cyg.spider.parse.WBDetailParser;
import com.huaguoguo.cyg.spider.processor.BasePageProcessor;
import lombok.extern.slf4j.Slf4j;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import us.codecraft.webmagic.Page;
import us.codecraft.xsoup.Xsoup;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 类说明： 按用户爬取微博信息(下拉菜单)<br/>
 * @author: huaguoguo
 * Date: 2019/8/17
 * Time: 14:53
 */
@Slf4j
public class WeiboUserPageBarProcessor extends BasePageProcessor {
    /**
     * 每一页可以下拉两次
     * 两次下拉加载时， pagebar： 0 -> 1 page和pre_page都是当前页码
     * id : domain+uid
     */
    private String pageUrlTemplate = "http://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain={}&pagebar={}&id={}{}&page={}&pre_page={}&is_hot={}";

    @Override
    public void process(Page page) {
        // 1. 从这个json中提取出html内容
        String html = JSONUtil.parse(page.getRawText()).getByPath("data", String.class);
        // 2. 用jsoup转化成document
        Document content = Jsoup.parse(html);
        // 3. 开始解析
        List<WBDetail> wbList = WBDetailParser.parseHtmlToWBDetail(content);
        // 4. 交给pipeline去处理
        page.putField("wbList",wbList);
    }

    /**
     * 构建下拉url
     * http://weibo.com/p/aj/v6/mblog/mbloglist?ajwvr=6&domain={}&pagebar={}&id={}{}&page={}&pre_page={}&is_hot={}";
     * @return
     */
    @Override
    public String buildRequestUrl(){
        return StrUtil.format(
                pageUrlTemplate,
                data.get("domain"),data.get("pagebar"),data.get("domain"),data.get("uid"),data.get("page"),data.get("page"),data.get("isHot")
        );
    }
}
